package lyl.twopointer;

import java.lang.reflect.Array;
import java.util.Arrays;

/**
 * 给个数组，找能够成三角形的
 */
public class TriangleCount {

    public int triangleCount(int[] S){
        if(S == null || S.length < 3){
            return 0;
        }
        Arrays.sort(S);
        int total = 0;
        //i为最大边，j为中间的,k为最小的
        for (int i = S.length - 1; i >= 2; i--) {
           int k = 0;
           int j = i - 1;
           while(k < j){
               if(S[k] + S[j] > S[i]){
                   total += j - k;//当前位置到末位的都满足
                   j -- ;//看看小一点能不能满足
               }else {
                   k ++; //只有增加最大边看看
               }
           }

        }
        return total;
    }
}
